#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
#include <cstring>
using namespace std;

int ti,td,tr,te;
int alen,blen;
int dp[4010][4010];
char sa[4010],sb[4010];
int aCharPos[300];

void move(int pa,int pb,int cost)
{
	if(cost<dp[pa][pb])
	{
		dp[pa][pb]=cost;
	}
}
int main()
{
	cin>>ti>>td>>tr>>te;
	scanf("%s%s",sa+1,sb+1);
	alen=strlen(sa+1);
	blen=strlen(sb+1);
	for(int i=0;i<=alen;i++) for(int j=0;j<=blen;j++) dp[i][j]=1<<29;
	dp[0][0]=0;
	for(int pa=0;pa<=alen;pa++)
	{
		aCharPos[sa[pa]] = pa;
		int pteb = 0;
		for(int pb=0;pb<=blen;pb++)
		{
			int t = dp[pa][pb];
			int ptea=aCharPos[sb[pb+1]];
			if(sa[pa+1]==sb[pb+1]) move(pa+1,pb+1,t);
			else move(pa+1,pb+1,t+tr);
			move(pa+1,pb,t+td);
			move(pa,pb+1,t+ti);
			if(pteb&&ptea)
				move(pa+1,pb+1,dp[ptea-1][pteb-1]+(pa-ptea)*td+te+(pb-pteb)*ti);
			if(sb[pb+1]==sa[pa+1]) pteb=pb+1;
		}
	}
	printf("%d\n",dp[alen][blen]);
	return 0;
}
